/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presenter;

import boundary.AdddirRegionalView;
import collection.CollectionAgencia;
import collection.CollectionDirRegional;
import entity.Agencia;
import entity.DirRegional;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author jakson
 */
public class AddDirRegionalPresenter {

    private AdddirRegionalView view;
    private collection.CollectionDirRegional incluir = new CollectionDirRegional();
    private collection.CollectionAgencia agencias;

    public AddDirRegionalPresenter(String editar, DirRegional a) {

        view = new AdddirRegionalView(null, true);

        if (editar.equals("editar")) {

            view.setTitle("Editar Agência");
            carregarTelaEditar(a);
            view.getBtnSalvar().addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent ae) {
                    editar();
                }
            });


        }else{
            view.getBtnSalvar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                salvar();
            }
        });
            
        }
        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                fechar();
            }
        });

        
        imprimeAgencias();
        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    private void fechar() {
        view.dispose();
    }

    private void salvar() {
        try {
            DirRegional dir = new DirRegional(view.getCampoNome().getText(), view.getCampoEndereco().getText(), view.getCampoCpf().getText(),
                    view.getCampoDataNascimento().getText(), view.getCampoUsuario().getText(), view.getCampoComboBox().getSelectedItem().toString());


            if (view.getCampoNome().getText().isEmpty()) {
                throw new Exception(" CAMPO NOME VAZIO");
            } else if (view.getCampoEndereco().getText().isEmpty()) {
                throw new Exception("CAMPO ENDEREÇO VAZIO");
            } else if (view.getCampoCpf().getText().isEmpty()) {
                throw new Exception("CAMPO CPF VAZIO");
            } else if (view.getCampoDataNascimento().getText().isEmpty()) {
                throw new Exception("CAMPO DATA DE NASCIMENTO VAZIO");
            } else if (view.getCampoUsuario().getText().isEmpty()) {
                throw new Exception("CAMPO USUÁRIO VAZIO");
            } else {
                incluir.incluir(dir);
                JOptionPane.showMessageDialog(null, "CADASTRO REALIZADO COM SUCESSO");
                limparCampos();
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(view, e.getMessage());
        }
    }

    private void editar() {
        try {
            DirRegional dir = new DirRegional(view.getCampoNome().getText(), view.getCampoEndereco().getText(), view.getCampoCpf().getText(),
                    view.getCampoDataNascimento().getText(), view.getCampoUsuario().getText(), view.getCampoComboBox().getSelectedItem().toString());


            if (view.getCampoNome().getText().isEmpty()) {
                throw new Exception(" CAMPO NOME VAZIO");
            } else if (view.getCampoEndereco().getText().isEmpty()) {
                throw new Exception("CAMPO ENDEREÇO VAZIO");
            } else if (view.getCampoCpf().getText().isEmpty()) {
                throw new Exception("CAMPO CPF VAZIO");
            } else if (view.getCampoDataNascimento().getText().isEmpty()) {
                throw new Exception("CAMPO DATA DE NASCIMENTO VAZIO");
            } else if (view.getCampoUsuario().getText().isEmpty()) {
                throw new Exception("CAMPO USUÁRIO VAZIO");
            } else {
                incluir.editacao(dir);
                JOptionPane.showMessageDialog(null, "EDIÇÃO REALIZADO COM SUCESSO");
                limparCampos();
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(view, e.getMessage());
        }
    }

    private void limparCampos() {

        view.getCampoNome().setText("");
        view.getCampoEndereco().setText("");
        view.getCampoCpf().setText("");
        view.getCampoDataNascimento().setText("");
        view.getCampoUsuario().setText("");

    }

    private void imprimeAgencias() {

        ArrayList<Agencia> agen = new ArrayList<Agencia>();
        agencias = new CollectionAgencia();
        agen = agencias.getAgencias();

        for (int i = 0; i < agen.size(); i++) {
            view.getCampoComboBox().addItem(agen.get(i).getCodigo());
        }

    }

    private void carregarTelaEditar(DirRegional a) {

        view.getCampoNome().setText(a.getNome());
        view.getCampoDataNascimento().setText(a.getDataNascimento());
        view.getCampoEndereco().setText(a.getEndereco());
        view.getCampoCpf().setText(a.getCpf());
        view.getCampoUsuario().setText(a.getUsuario());


    }
}